home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / comm / net / ARemote1_00B.lha / ARemote / source / playback.c < prev   
C/C++ Source or Header  |  1997-04-27  |  3KB  |  117 lines

  1.  
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. #include <dos/dos.h>
  7. #include <clib/dos_protos.h>
  8. #include <clib/exec_protos.h>
  9.  
  10. #include <clib/AMarquee_protos.h>
  11. #include <devices/inputevent.h>
  12.  
  13. #include <pragmas/AMarquee_pragmas.h>
  14.  
  15. struct Library * AMarqueeBase = NULL;
  16. struct QSession * session     = NULL;
  17. FILE * fTest = NULL;
  18.  
  19.  
  20. /* Takes user input until blank line is typed */
  21. void ProcessDebugCommands(struct QSession * session)
  22. {
  23.   while(1)
  24.   {
  25.    char debugline[500] = "\0\0\0\0\0\0\0\0";
  26.    char * keyword, * data;
  27.    ULONG dataLen = 0L;
  28.    LONG res;
  29.    
  30.    printf("Enter your debug command now: "); fflush(stdout);
  31.    gets(debugline);
  32.   
  33.    keyword = &debugline[2];
  34.    if (data = strchr(keyword,'='))
  35.    {
  36.      *data = '\0';  /* terminate the keyword */
  37.      data++;
  38.      dataLen = strlen(data)+1;
  39.    }
  40.    switch((int)(debugline[0]))
  41.    {
  42.      case '\0': res=QGo(session,0L);                           break;
  43.      case 'A':  res=QSetMessageAccessOp(session, keyword, -1); break;
  44.      case 'm':  res=QMessageOp(session, keyword, data, dataLen); break;
  45.      case 'a':  res=QSetAccessOp(session, keyword);          break;
  46.      case 's':  res=QSetOp(session, keyword, data, dataLen); break;
  47.      case 'S':  res=QStreamOp(session, keyword, data, dataLen); break;
  48.      case 'r':  res=QRenameOp(session, keyword, data);       break;
  49.      case 'D':  res=QDebugOp(session, keyword);              break;
  50.      case 'g':  res=QGetOp(session, keyword, -1);            break;
  51.      case 'd':  res=QDeleteOp(session, keyword);             break;
  52.      case 'i':  res=QInfoOp(session);                        break;
  53.      case 'c':  res=QSubscribeOp(session, keyword, -1);      break;
  54.      case 'k':  res=QClearSubscriptionsOp(session,atoi(keyword)); break;
  55.      case 'p':  res=QPingOp(session);                        break;
  56.      default:   printf("Command code %c was not recognized.\n",debugline[0]); break;
  57.    }
  58.    printf("(Op result was %i)\n",res);
  59.    if (debugline[0] == '\0') return;
  60.   }
  61. }
  62.  
  63.  
  64. void CleanExit(void)
  65. {
  66. printf("\nCleaning up...\n");
  67.   if (fTest) fclose(fTest);
  68.   if (session)      QFreeSession(session);        /* This MUST be done before we close the library! */
  69.   if (AMarqueeBase) CloseLibrary(AMarqueeBase);  
  70.   printf("All done.\n");
  71. }
  72.  
  73. /* Main program */
  74. int main(int argc, char ** argv)
  75. {
  76.   char * connectTo, * progName;
  77.   int port;
  78.   struct InputEvent ie;
  79.  
  80.   fTest = fopen("ie.bin","r");    
  81.   if (fTest == NULL) 
  82.   {
  83.     printf("Couldn't open test file ie.bin\n");
  84.     exit(0);
  85.   }
  86.   
  87.   printf("Usage Note:  AMarqueeDebug [hostname=localhost] [myname=ARemote] [port=20000]\n");  
  88.   atexit(CleanExit);
  89.   
  90.   connectTo = (argc>1) ? argv[1] : "localhost";
  91.   progName  = (argc>2) ? argv[2] : "ARemote";
  92.   port      = (argc>3) ? atoi(argv[3]) : 20000;
  93.  
  94.   if ((AMarqueeBase = OpenLibrary("amarquee.library",43L)) == NULL)
  95.   {
  96.     printf("Couldn't open amarquee.library v43+!\n");
  97.     exit(RETURN_ERROR);
  98.   }
  99.   printf("Connecting to %s:%i\n",connectTo, port);
  100.  
  101.   if ((session = QNewSession(connectTo, port, progName)) == NULL)
  102.   {
  103.     printf("Couldn't connect to server %s:%i\n",connectTo, port);
  104.     exit(RETURN_WARN);
  105.   }
  106.  
  107.   printf("Connected to server %s:%i\n",connectTo, port);
  108.  
  109.   while(fread(&ie, 1, sizeof(struct InputEvent), fTest) == sizeof(struct InputEvent))
  110.   {
  111.     QStreamOp(session, "e", &ie, sizeof(struct InputEvent));
  112.     QGo(session, 0L);
  113.     Delay(1);
  114.   }
  115.   /* CleanExit() called here! */
  116. }
  117.